﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace BUGCOME.Model.Logs
{
    /// <summary>
    /// 用户登录日志实体类，用于记录用户登录系统的相关信息
    /// </summary>
    [SugarTable("user_login_log", "用户消息")]
    [Tenant("4")]
    public class UserLoginLog
    {
        /// <summary>
        /// 日志ID，主键，自增长
        /// </summary>
        [SugarColumn(IsPrimaryKey = true, IsIdentity = true)]
        public long Id { get; set; }

        /// <summary>
        /// 用户账号，记录登录的用户名
        /// </summary>
        public string UserName { get; set; }

        /// <summary>
        /// 登录状态
        /// 0: 成功
        /// 1: 失败
        /// </summary>
        [SugarColumn(Length = 1, DefaultValue = "0")]
        public string Status { get; set; }

        /// <summary>
        /// 登录IP地址，记录用户登录时的IP地址
        /// </summary>
        public string Ipaddr { get; set; } = string.Empty;

        /// <summary>
        /// 登录地点，根据IP地址解析出的地理位置信息
        /// </summary>
        public string LoginLocation { get; set; } = string.Empty;

        /// <summary>
        /// 浏览器类型，记录用户登录时使用的浏览器信息
        /// </summary>
        public string Browser { get; set; } = string.Empty;

        /// <summary>
        /// 操作系统，记录用户登录时使用的操作系统信息
        /// </summary>
        public string Os { get; set; } = string.Empty;

        /// <summary>
        /// 提示消息，登录操作的相关提示信息（如失败原因）
        /// </summary>
        public string Msg { get; set; } = string.Empty;

        /// <summary>
        /// 访问时间，记录用户登录的时间，默认为当前时间
        /// </summary>
        public DateTime LoginTime { get; set; } = DateTime.Now;

        /// <summary>
        /// 开始时间，用于查询过滤，不映射到数据库
        /// </summary>
        [SugarColumn(IsIgnore = true)]
        public DateTime? BeginTime { get; set; }

        /// <summary>
        /// 结束时间，用于查询过滤，不映射到数据库
        /// </summary>
        [SugarColumn(IsIgnore = true)]
        public DateTime? EndTime { get; set; }

        /// <summary>
        /// 客户端ID，标识用户登录的客户端设备
        /// </summary>
        public string ClientId { get; set; }

        /// <summary>
        /// 用户ID，关联的用户表主键
        /// </summary>
        public long UserId { get; set; }

        /// <summary>
        /// 登录位置，从登录地点中提取的主要位置信息
        /// 不映射到数据库，通过计算属性获取
        /// </summary>
        [SugarColumn(IsIgnore = true)]
        public string? Position
        {
            get
            {
                var temp_location = LoginLocation.Split("-")?[0];
                if (temp_location == "0")
                {
                    return "IP未知";
                }
                return temp_location;
            }
        }
    }
}